﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Store.Web.Models;
using System.Web.Mvc;

namespace Store.Web.Tools
{
    public class StoreDatabaseInitializer : System.Data.Entity.DropCreateDatabaseAlways<StoreDbContext>
    {
        protected override void Seed(StoreDbContext context)
        {
            #region Products
            Product p1 = new Product();
            p1.Title = "Dance Central 2";
            p1.Description = "Préparez-vous pour le best-seller des jeux de danse sur Kinect ! Avec une nouvelle bande-son de folie, les meilleurs enchaînements et de toutes nouvelles fonctions multi-joueurs, Dance Central 2 va mettre le feu à votre fête !";
            p1.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EN-Cart-Xbox-360-Dance-Central-2.png";
            p1.Price = 49.99M;

            context.Products.Add(p1);

            Product p2 = new Product();
            p2.Title = "Kinect Sports: Season Two";
            p2.Description = "Franchissez le marbre, emparez-vous de votre driver pour un swing de toute beauté ou servez un ace, l'une des franchises Kinect les plus populaires, « Kinect Sports: Season Two » est de retour — uniquement sur Kinect pour Xbox 360. Avec six nouvelles disciplines sportives palpitantes, « Kinect Sports: Season Two » vous fera enfin quitter votre canapé et transformera votre salon en terrain de sport de renommée internationale, où l'intuition, le mouvement et la compétition règnent en maître. Cette seconde saison de « Kinect Sports », l'un des jeux les plus vendus et maintes fois récompensé, vous offre davantage d'action, pour une expérience de jeu et des sensations inoubliables ! ";
            p2.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EN-Cart-Xbox-360-Kinect-Sports-2.png";
            p2.Price = 49.99M;

            context.Products.Add(p2);

            Product p3 = new Product();
            p3.Title = "Kinect Disneyland Adventures";
            p3.Description = "Explorez un lieu à la croisée de deux mondes magiques : Kinect pour Xbox 360 vous invite à participer à une aventure au cours de laquelle les histoires prennent vie et les rêves deviennent réalité sans même quitter votre salon ! Arpentez le parc Disneyland de Main Street U.S.A. à Critter Country, joignez-vous à Peter Pan pour affronter le capitaine Crochet, venez saluer Mickey Mouse ou faites un gros câlin à Blanche-Neige. ";
            p3.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EN-Cart-Xbox-360-Disneyland-Adventures.png";
            p3.Price = 49.99M;

            context.Products.Add(p3);

            Product p4 = new Product();
            p4.Title = "Console Xbox 360 4 Go avec Kinect + Carnival Games et Carte d'abonnement Gold (3 mois)";
            p4.Description = "Avec le pack composé d'une console Xbox 360 et de la fonction Kinect, de longues heures de jeux s'offrent à vous. La Xbox 360 avec un disque dur de 4 Go, une manette adaptée, le capteur révolutionnaire Kinect et les Carnival Games sont fournis : Monkey See Monkey Do et un abonnement de 3 mois à Xbox LIVE Gold. La nouvelle console Xbox 360, silencieuse et au design élégant, vous offre avec la technologie de détection des mouvements du capteur Kinect des heures de jeux pendant lesquels vous devenez vous-même la manette.";
            p4.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EMEA_CartW_Xbox-360-S-4GB-Kinect-Bundle-Carnival.png";
            p4.Price = 299.99M;

            context.Products.Add(p1);

            Product p5 = new Product();
            p5.Title = "Console Xbox 360 250 Go avec Kinect + Kung Fu Panda 2 et Carte d'abonnement Gold (3 mois)";
            p5.Description = "Avec le pack composé d'une console Xbox 360 et de la fonction Kinect, de longues heures de jeux s'offrent à vous. La nouvelle Xbox 360 dotée d'un disque dur d'une capacité de 250 Go, une manette adaptée, le casque Xbox LIVE, le capteur révolutionnaire Kinect, Kung Fu Panda 2 et un abonnement de trois mois à Xbox LIVE sont fournis : La nouvelle console Xbox 360, silencieuse et au design élégant, vous offre avec la technologie de détection des mouvements du capteur Kinect des heures de jeux pendant lesquels vous devenez vous-même la manette";
            p5.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EMEA_CartW_Xbox-360-250GB-Console-Kinect-Bundle-Kung-Fu.png";
            p5.Price = 349.99M;

            context.Products.Add(p5);

            Product p6 = new Product();
            p6.Title = "Console Xbox 360 250 Go, avec Kinect";
            p6.Description = "À vous de jouer : La nouvelle Xbox 360 : un tout nouveau design plus fin, décliné dans une nouvelle finition laqué noir. Wi-Fi intégré pour un accès facilité au monde du divertissement numérique sur Xbox LIVE, permettant la visualisation en streaming de films et d'émissions télévisées en haute définition. Et grâce à l'énorme capacité du disque dur de la Xbox 360, vous disposerez de tout l'espace dont vous avez besoin pour stocker vos jeux et vos films favoris. La Xbox 360, c'est plus de jeux et plus de divertissements. ";
            p6.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EMEA_Prd_CartW_Xbox360-Kinect-Bundle-250GB.png";
            p6.Price = 349.99M;

            context.Products.Add(p6);

            Product p7 = new Product();
            p7.Title = "Halo 3";
            p7.Description = "Un héros est sur le point de naître. La saga épique continue avec Halo 3, le troisième chapitre de la série tant acclamée et plébiscitée. Le Major revient mettre un terme au combat qui oppose les Covenants, les Parasites et la race humaine toute entière, portant ce conflit épique à un paroxysme dramatique qui va vous tenir en haleine.";
            p7.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/FR_Prd_Bx_Gbl_Xbox360_Halo_Reach_HEA-00051.png";
            p7.Price = 29.00M;

            context.Products.Add(p7);

            Product p8 = new Product();
            p8.Title = "Fable III pour Xbox 360";
            p8.Description = "Plongez-vous à l'ère de la révolution industrielle. Fable III, le dernier opus de la célèbre franchise exclusive Xbox 360, vous embarquera pour une aventure épique, où la course à la couronne n'est que le début de votre spectaculaire voyage. Cinq décennies se sont écoulées depuis les événements de Fable II et Albion a connu la révolution industrielle, mais le destin du royaume est en danger. ";
            p8.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/UK_Gbl_Fable3_SE_xbox_PEGI.png";
            p8.Price = 69.99M;

            context.Products.Add(p8);

            Product p9 = new Product();
            p9.Title = "Gears of War 3";
            p9.Description = "Une dernière tentative désespérée pour l'escouade Delta de sauver ce qui reste de l'humanité. Plongez au cœur de la dernière épopée de la trilogie Gears of War, et combattez aux côtés de l'escouade Delta pour sauver l'humanité";
            p9.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EMEA-Small-Xbox-360-Gears-of-War-3.jpg";
            p9.Price = 65.00M;

            context.Products.Add(p9);

            Product p10 = new Product();
            p10.Title = "Forza Motorsport 4";
            p10.Description = "Le jeu de course absolu de 2011. Forza Motorsport, la franchise des jeux de course la plus cotée de sa génération, annonce pour l'automne 2011 la sortie de son opus 4. Cette référence 2011 allie aux spécificités des jeux de courses avec manette toute la liberté et la puissance du capteur Kinect, et regroupe les contenus des principales marques du genre, comme Top Gear, afin de vous faire vivre une expérience automobile unique.";
            p10.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EN-Gbl-Xbox-360-Forza-Motorsport-4.png";
            p10.Price = 59.99M;

            context.Products.Add(p10);

            Product p11 = new Product();
            p11.Title = "Forza Motorsport 2";
            p11.Description = "Forza Motosport 2 est un simulateur de course entièrement personnalisable qui vous permet de collectionner, de personnaliser et de piloter plus de 300 voitures choisies parmi les véhicules dernier cri du monde entier. Accrochez-vous et préparez-vous pour d'authentiques simulations physiques, d'incroyables secousses, et bénéficiez de graphismes d'une qualité photographique, ainsi que d'un espace tuning et d'options de customisation.";
            p11.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/FR_Prd_Bx_Gbl_Xbox360_Forza_2_Classics.png";
            p11.Price = 29.00M;

            context.Products.Add(p11);

            Product p12 = new Product();
            p12.Title = "Halo: Combat Evolved Anniversary";
            p12.Description = "Les héros ne meurent jamais. Conçu pour célébrer le dixième anniversaire de l’une des franchises les plus appréciées de l’histoire du jeu vidéo, Combat Evolved Anniversary est une spectaculaire version remasterisée de la campagne Halo initiale. Il comprend une kyrielle de nouvelles fonctionnalités, notamment sept des cartes multijoueurs les plus populaires de l’histoire de Halo, le mode coopératif sur Xbox LIVE, de nouvelles récompenses, de nouveaux défis et une histoire inédite à découvrir.";
            p12.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/EN-Gbl-Xbox-360-Halo-Anniversary.png";
            p12.Price = 39.99M;

            context.Products.Add(p12);

            Product p13 = new Product();
            p13.Title = "Halo: Reach pour Xbox 360";
            p13.Description = "Vivez les moments décisifs qui ont forgé la légende de Halo dans Halo : Reach. Avec Halo : Reach, une histoire obscure dont l’ambiance est amplifiée par des effets visuels réalistes, continuez à vivre les moments décisifs à la base de la légende Halo. Une extension des nombreuses fonctionnalités à la pointe de Halo 3, Halo : Reach vous offre des environnements vastes et terrifiants au sein desquels vous pouvez rejoindre la dernière ligne de défense humaine entre la terrifiante alliance Covenante et la Terre.";
            p13.PictureUrl = "http://juco-thinkpad/Store.Web/Content/Pictures/FR_Prd_Bx_Gbl_Xbox360_Halo_Reach_HEA-00051.png";
            p13.Price = 69.99M;

            context.Products.Add(p13); 
            #endregion

            #region Addresses

            Address homeAddress = new Address();
            homeAddress.City = "Paris";
            homeAddress.FirstName = "Julien";
            homeAddress.LastName = "Corioland";
            homeAddress.Phone = "0102030405";
            homeAddress.Street = "Rue de la roquette";
            homeAddress.ZipCode = 75011;
            homeAddress.Label = "Maison";

            context.Addresses.Add(homeAddress);

            Address workAddress = new Address();
            workAddress.City = "Paris";
            workAddress.FirstName = "Julien";
            workAddress.LastName = "Corioland";
            workAddress.Phone = "0102030405";
            workAddress.Street = "Rue Traversière";
            workAddress.ZipCode = 75012;
            workAddress.Label = "Boulot";

            context.Addresses.Add(workAddress);

            #endregion

            #region Customers

            Customer customer = new Customer();
            customer.FirstName = "Julien";
            customer.LastName = "Corioland";
            customer.Email = "jcorioland@infinitesquare.com";
            customer.Password = "password";
            customer.Addresses = new List<Address>();
            customer.Addresses.Add(homeAddress);
            customer.Addresses.Add(workAddress);

            #endregion

            #region Commands

            Order command = new Order();
            command.Customer = customer;
            command.Products = new List<Product>();
            command.Products.AddRange(new Product[] { p1, p2, p3 });
            command.ShipAddress = homeAddress;
            command.State = 3;
            command.TotalPrice = p1.Price + p2.Price + p3.Price;
            command.CreationDate = DateTime.Now.AddDays(-20);
            command.ModificationDate = DateTime.Now.AddDays(-20);

            context.Orders.Add(command);

            Order command2 = new Order();
            command2.Customer = customer;
            command2.Products = new List<Product>();
            command2.Products.AddRange(new Product[] { p4, p5 });
            command2.ShipAddress = homeAddress;
            command2.State = 2;
            command2.TotalPrice = p4.Price + p5.Price;
            command2.CreationDate = DateTime.Now.AddDays(-10);
            command2.ModificationDate = DateTime.Now.AddDays(-10);

            context.Orders.Add(command2);

            Order command3 = new Order();
            command3.Customer = customer;
            command3.Products = new List<Product>();
            command3.Products.AddRange(new Product[] { p6, p7 });
            command3.ShipAddress = homeAddress;
            command3.State = 1;
            command3.TotalPrice = p6.Price + p7.Price;
            command3.CreationDate = DateTime.Now;
            command3.ModificationDate = DateTime.Now;

            context.Orders.Add(command3);

            #endregion

            context.SaveChanges();
            base.Seed(context);
        }
    }
}